package com.thinvent.nj.ais.shiro;

import com.thinvent.nj.ais.entity.Org;
import com.thinvent.nj.ais.entity.User;
import org.apache.shiro.SecurityUtils;

import java.util.List;

/**
 * 持有认证用户信息类
 * @author liupeijun
 */
public class UserContextUtil {

    private UserContextUtil() {}

    /**
     * 当前运行服务器
     * @return
     */
    public static String currentServer() {
        return (String) SecurityUtils.getSubject().getSession().getAttribute("serverName");
    }

    /**
     * 当前登录用户
     * @return
     */
    public static User currentUser() {
        Object o = SecurityUtils.getSubject().getPrincipal();

        if (o instanceof User) {
            return (User) o;
        }

        return (User) SecurityUtils.getSubject().getSession().getAttribute("user");
    }

    /**
     * 当前登录用户名
     * @return
     */
    public static String username() {
        return currentUser().getUsername();
    }

    /**
     * 当前登录用户ID
     * @return
     */
    public static String userId() {
        return currentUser().getId();
    }

    /**
     * 当前登录用户姓名
     * @return
     */
    public static String fullName() {
        return currentUser().getFullName();
    }

    /**
     * 获取当前登录用户所属组织（多个组织取第一组织）
     */
    public static Org org() {
        return currentUser().getOrgList().get(0);
    }

    /**
     * 获取当前登录用户所属组织（可能存在多个组织）
     * @return
     */
    public static List<Org> orgList() {
        return currentUser().getOrgList();
    }

    /**
     * 获取当前登录用户所属组织ID（多个组织取第一组织）
     */
    public static String orgId() {
        return org().getId();
    }

}
